## Проектирование сетевых протоколов

### Теоретические вопросы на экзамен

1. Модель OSI / ISO і зв'язок з протоколами, інтерфейсами і стеком протоколів
2. Види і типи протоколів для різних рівнів моделі OSI/ISO
3. Поняття рукостискання, протоколи з встановленням з'єднання і без встановлення
4. Гарантована доставка та не гарантована доставка
5. Контрольні суми, маршрутизація, порти, хости, сокети
6. Способи опису структури пакетів, для текстових RegExp і ABNF, та нотація для двійкових пакунків
7. Поняття заголовків (headers), тіла (payload), шари абстракцій і стеки протоколів
8. Принципи взаємодії систем: request/responce, принципи pool/push
9. Принципи взаємодії систем: повідомлення і шини повідомлень, трансляція подій, хаб, брокер
10. Принципи взаємодії систем: шина, широкомовна передача, клієнт-сервер
11. Ідентифікація та адресація, URI, URL, URN, IPv4, IPv6
12. Протоколи з гарантованою доставкою, приклади використання
13. Призначення контрольних сум, алгоритми образхування сум, хеш функції
14. Способи інтеграції систем в гетерогенній мережевому середовищі
15. Оптимізація складності взаємодії, топологія мереж
16. Виклик віддалених процедур, маршалінг, серіалізація і десеріалізація, заглушки
17. Архітектури: файл-сервер, клієнт-сервер, трьохрівнева, багаторівнева
18. Товстий і тонкий клієнт
19. Шари абстракцій в ІС і зв'язування шарів інтерфейсами і протоколами
20. Веб-сервіси. Стек протоколів для веб-додатків і веб-архітектури
21. Огляд протоколів: TCP, UDP, ICMP, HTTP, FTP, ARP, IMAP, RDP, POP3
22. Огляд протоколів: SMTP, SNMP, XMPP, DHCP, TLS, VPN, L2TP
23. Огляд форматів серіалізації і представлення даних в протоколах: MIME, BASE64, JSON, YAML, XML
24. Огляд форматів серіалізації і представлення даних в протоколах: HTML, UUE, CSV, BSON, URLENCODE
25. Принципи вибору стека протоколів і бібліотек реалізації, на прикладі інформаційних систем для роботи з базами даних
26. Принципи вибору стека протоколів і бібліотек реалізації, на прикладі інформаційних систем для роботи здокументообігу
27. Питання безпеки: використання аутентифікації, авторизації, підтримки сесій, багатофакторна перевірка справжності
28. Питання безпеки: сертифікати шифрування, відкритий і закритий ключі (асиметричне шифрування), PGP, SSL, TLS, HTTPS, RSA
29. Захист від атак за допомогою протоколів: переповнення буфера, ін'єкції коду, ескейпінг, валідація.
30. Захист від атак за допомогою протоколів: фільтрація пакетів, аксес-листи і блек-листи, капча, захист автентичності від DOS/DDOS
31. Балансування навантаження серверів, протоколи ініціалізації з'єднання, проксі і реверспроксі
32. Раундробін, хеш-функції для розсіювання навантажень
33. Питання надійності в високонавантажених системах з використанням протоколів
34. Протоколи зі станом і без стану, особливості REST
35. Особливості використання транзакційних протоколів та відкати стану
36. Приклад проектування протоколу виклику віддалених процедур з трансляцією подій
37. Приклад оптимізації формату серіалізації для представлення даних в міжпроцесній взаємодії
38. Особливості застосування протоколів з брокерами запитів
39. Особливості протоколів, використовуваних в локальних і глобальних мережах
40. Характеристика протоколів стеку TCP/IP
41. Протоколи мережевого рівня, приклади та особливості
42. Протоколи транспортного рівня, приклади та особливості
43. Протоколи прикладного рівня, приклади та особливості
44. Веб-сервіси як засіб інтеграції додатків
45. Веб-служби: концепції та протоколи
46. Стандарти систем управління на основі протоколу SNMP, примітиви протоколу SNMP
47. Стандарти систем управління на основі протоколу SNMP, формати і імена об'єктів SNMP MIB
48. Брокери запитів Їх функції і особливості
49. Розкрити відмінність: сеанс із встановленням з'єднання і без встановлення
50. Розкрити відмінність: точка-точка і широкомовна передача
51. Розкрити відмінність понять: авторизація і аутентифікація
52. Розкрити відмінність: пакетні і потокові протоколи
53. Розкрити відмінність: парсинг регулярними виразами і парсинг операціями з рядками
54. Розкрити відмінність: синхронна і асинхронна взаємодія
55. Блокирующий и неблокирующий ввод/вывод
56. Межпроцессное взаимодействие (Interprocess Communication), классификация
57. Балансировка нагрузки в многопоточных приложениях, серверная и клиентская
58. Использование итераторов и масштабирование распределенных вычислений
59. Организация слоя доступа к данным
60. Парсинг, сериализация и десериализация
